package com.heima.list;

import com.heima.array.Student;

import java.util.ArrayList;
import java.util.Scanner;

/*
    方法:
    接收集合(<Student>),
    找出年龄 < 18 的学生
    存入新集合
    返回新集合
 */
public class ListFilter {
    public static void main(String[] args) {
        //输入 - 学生人数
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入学生人数:");
        int num = sc.nextInt();
        //定义学生集合并默认初始化
        ArrayList<Student> stuList = new ArrayList<>();
        //输入 - 集合赋值
        setList(stuList,num,sc);
        //打印 - 旧集合
        printList(stuList);
        System.out.println();
        //输入 - 年龄限制
        System.out.print("请输入年龄限制:");
        int age = sc.nextInt();
        //筛选
        //定义新的集合接收筛选出的元素
        ArrayList<Student> nStuList = new ArrayList<>();
        nStuList = filter(stuList,nStuList, age);
        //打印 - 新集合
        printList(nStuList);

    }

    public static void printList(ArrayList<Student> stuList) {
        System.out.print("[");
        for (int i = 0; i < stuList.size(); i++) {
            if(i == stuList.size()-1){
                System.out.print("("+ stuList.get(i).getName()+",年龄"+ stuList.get(i).getAge()+")]");
            }else System.out.print("("+ stuList.get(i).getName()+",年龄"+ stuList.get(i).getAge()+"),");

        }
    }

    public static void setList(ArrayList<Student> stuList,int stuNum,Scanner sc) {
        //定义Student对象数组接收输入数据
        Student[] stu = new Student[stuNum];//声明  *注意 如果只定义一个student接收,那么集合里所有元素的值都会被下一个覆盖,最终全部等于最后一个输入值 详见D:\IDEA_Project\DayUk_List\src\com\heima\system add方法
        for (int i = 0; i < stuNum; i++) {//循环输入数据
            stu[i] = new Student();//初始化
            System.out.println("请输入第"+(i+1)+"个学生的姓名");
            stu[i].setName(sc.next());
            System.out.println("请输入第"+(i+1)+"个学生的年龄");
            stu[i].setAge(sc.nextInt());
            //添加已输入好的对象进入集合
            stuList.add(stu[i]);
        }
    }
//  接收集合(<Student>)
    public static ArrayList<Student> filter(ArrayList<Student> stuList,ArrayList<Student> nStuList,int age){
        //找出年龄 < 18 的学生 - 1存入新集合
        for (int i = 0; i < stuList.size(); i++) {
            if (stuList.get(i).getAge() < age){//找出学生
                //存入新集合
                nStuList.add(stuList.get(i));
            }
        }
        /*//找出年龄 < 18 的学生 - 2直接修改已有集合
        for (int i = 0; i < stuList.size(); i++) {
            if (stuList.get(i).getAge() == age){//找出学生
                 //删除该学生
                 nStuList.remove(i);
                 i--;//继续查看 该位从后前移的新元素
             }
        }
        **/
        //返回新集合
        return nStuList;
    }


}
